<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Home extends CI_Controller {

	function __construct()
	{
		parent::__construct();
		$this->load->model('usuario_model');
	}
	
	public function index()
	{
		$this->load->view('home/login');
	}
	
	public function login()
	{
		$this->index();
	}
	
	public function cadastro()
	{
		$this->load->view('home/cadastro');
	}
	
	public function gravar()
	{
		$config=array(
			  array(
	              'field' => 'nome',
	              'label' => 'Nome',
	              'rules' => 'trim|required|xss_clean|min_length[3]'
	              ),
			  array(
	              'field'   => 'email',
	              'label'   => 'Email',
	              'rules'   => 'trim|required|xss_clean|min_length[4]|max_length[40]|valid_email|callback_usercall'
	              ),
              array(
	              'field' => 'senha',
	              'label' => 'Senha',
	              'rules' => 'trim|required|xss_clean|min_length[3]|matches[rsenha]'
	              ),
              array(
	              'field' => 'rsenha',
	              'label' => 'Confirme a senha',
	              'rules' => 'trim|required|xss_clean|min_length[3]'
	              )
              
              );

              //atribui a lista de regras � pr�xima execu��o da valida��o
              $this->form_validation->set_rules($config);
              //Teste de validacao de dados
              if(($this->form_validation->run())==FALSE)
              {
              	//caso a validacao nao tenha tido sucesso
              	//ou ainda nao foi invocada
              	$this->load->view('home/cadastro');
              }
              else
              {
              	
              	$user['data_cadastro'] = date("Y-m-d");
              	$user['nome'] =   $this->input->post('nome');
              	$user['email'] =   $this->input->post('email');
              	$user['senha'] =   MD5($this->input->post('senha'));
              	$this->usuario_model->gravar($user);
              	
              	$data['email'] = $this->input->post('email');
			  	$user = $this->usuario_model->buscar($data);
				$sessao['logado'] = date("d/m/y H:i:s");
				$sessao[USUARIO] = $user;
				$this->session->set_userdata($sessao);
              	
              	$this->load->view('app/resumo/resumo');
              }
	}

	public function sair(){
		$this->session->sess_destroy();
		redirect('/');
	}

	public function autenticar(){

		//definicao da lista de regras a aplicar
		$config=array(
		array(
              'field'   => 'email',
              'label'   => 'Email',
              'rules'   => 'trim|required|xss_clean|min_length[4]|max_length[40]'
              ),
              array(
              'field' => 'senha',
              'label' => 'Senha',
              'rules' => 'trim|required|xss_clean|min_length[3]|callback_usercheck'
              )
              );

              //atribui a lista de regras � pr�xima execu��o da valida��o
              $this->form_validation->set_rules($config);
              //Teste de validacao de dados
              if(($this->form_validation->run())==FALSE)
              {
              	//caso a validacao nao tenha tido sucesso
              	//ou ainda nao foi invocada
              	$this->load->view('home/login');
              }
              else
              {
              	//se a validacao teve sucesso
              	//redirecciona para uma pagina de sucesso
              	$this->load->view('app/resumo/resumo');
              }

	}
	
	public function usercall(){
		$data['email'] = $this->input->post('email');
		$user = $this->usuario_model->buscar($data);
		if($user){
			$this->form_validation->set_message('usercall', 'Email já existente.');
			return false;
		}
	}
	
	public function usercheck(){
		$data['email'] = $this->input->post('email');
		$data['senha'] = MD5($this->input->post('senha'));
		$user = $this->usuario_model->buscar($data);
		if($user){
			$sessao['logado'] = date("d/m/y H:i:s");
			$sessao[USUARIO] = $user;
			$this->session->set_userdata($sessao);
		}else{
			$this->form_validation->set_message('usercheck', 'Email ou senha invalido.');
			return false;
		}
	}
}
